package com.example.book.sys.role.service;

import com.example.book.base.BaseService;
import com.example.book.sys.role.dao.SysRoleDao;
import com.example.book.sys.role.dao.SysRoleMenuDao;
import com.example.book.domain.sys.SysRole;
import com.example.book.domain.sys.SysRoleMenu;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @author haocj
 * 角色service
 */
@Service
public class SysRoleService extends BaseService<SysRole,SysRoleDao> {


   @Resource
   private SysRoleDao sysRoleDao;
   @Resource
   private SysRoleMenuDao sysRoleMenuDao;

   @Transactional(readOnly = false,rollbackFor = Exception.class)
   public void save(SysRole sysRole,String[] ids){

      if (!StringUtils.isNotBlank(sysRole.getId())) {
         sysRole.preInit();
         sysRoleDao.save(sysRole);
      } else {
         sysRole.preInit();
         sysRoleDao.update(sysRole);
         //修改权限删除原有权限
         sysRoleMenuDao.deleteById(sysRole.getId());
      }

      // 新增权限
      List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
      SysRoleMenu sysRoleMenu = null;
      for (String id : ids){
         sysRoleMenu = new SysRoleMenu();
         sysRoleMenu.setRoleId(sysRole.getId());
         sysRoleMenu.setMenuId(id);
         list.add(sysRoleMenu);
      }
      sysRoleMenuDao.save(list);
   }

   /**
    * 多表删除
    * @param ids
    */
   @Override
   @Transactional(readOnly = false,rollbackFor = Exception.class)
   public Integer delete(String[] ids){
      // 删除角色
      sysRoleDao.delete(ids);
      // 删除权限节点
      return sysRoleMenuDao.delete(ids);
   }

}
